package string;

/**
 * 给你一个字符串数组 patterns 和一个字符串 word ，统计 patterns 中有多少个字符串是 word 的子字符串。返回字符串数目。
 * 子字符串 是字符串中的一个连续字符序列。
 * <p>
 * 示例 1：
 * 输入：patterns = ["a","abc","bc","d"], word = "abc"
 * 输出：3
 * 解释：
 * - "a" 是 "abc" 的子字符串。
 * - "abc" 是 "abc" 的子字符串。
 * - "bc" 是 "abc" 的子字符串。
 * - "d" 不是 "abc" 的子字符串。
 * patterns 中有 3 个字符串作为子字符串出现在 word 中。
 * <p>
 * 示例 2：
 * 输入：patterns = ["a","b","c"], word = "aaaaabbbbb"
 * 输出：2
 * 解释：
 * - "a" 是 "aaaaabbbbb" 的子字符串。
 * - "b" 是 "aaaaabbbbb" 的子字符串。
 * - "c" 不是 "aaaaabbbbb" 的字符串。
 * patterns 中有 2 个字符串作为子字符串出现在 word 中。
 * <p>
 * 示例 3：
 * 输入：patterns = ["a","a","a"], word = "ab"
 * 输出：3
 * 解释：patterns 中的每个字符串都作为子字符串出现在 word "ab" 中。
 *
 * @author Jisheng Huang
 * @version 20250522
 */
public class NumberOfStrings_1967 {
    /**
     * Loop through the pattern array and check for each pattern
     *
     * @param patterns the given string pattern array
     * @param word     the given string words array
     * @return the number of valid pattern in the word
     */
    public static int numOfStrings(String[] patterns, String word) {
        int count = 0;

        for (String pattern : patterns) {
            if (word.contains(pattern)) {
                ++count;
            }
        }

        return count;
    }

    public static void main(String[] args) {
        String[] pattern = {"a", "abc", "bc", "d"};
        String word = "abc";
        System.out.println(numOfStrings(pattern, word));

        pattern = new String[]{"a", "b", "c"};
        word = "aaaaabbbbb";
        System.out.println(numOfStrings(pattern, word));

        pattern = new String[]{"a", "a", "a"};
        word = "ab";
        System.out.println(numOfStrings(pattern, word));
    }
}